clc,clear
close all
warning off
%% 导入数据
[~,~,data]=xlsread('data00.xlsx');
%% 按行去重
row=string(data);
[data0,~,idx]=unique(row,"rows","stable");
%% 异常值
%%正态分布
%JB检验(n>30)[是否满足正态分布]
% alpha=0.05;
% num=str2double(data0(1:end,1));
% [h,p0]=jbtest(num,alpha);
% %h=1时不符合正态分布(与标准的对比图)
% [f,xi]=ksdensity(zscore(num));
% plot(xi,f)
% M=randn(1,50000);
% [f,xi]=ksdensity(M);
% hold on
% plot(xi,f)
% legend('数据','标准')
% %通过检验则可以用3西格玛原则
% u=mean(num);    %计算均值
% sigma=std(num); %标准差
% lb=u-3*sigma;
% ub=u+3*sigma;
% ind=find((num<lb)|(num>ub));
% num(ind)=NaN;

%%箱线图
num=str2double(data0(:,1));
figure
boxplot(num);
Q1=prctile(num,25); %第25%分位数
Q3=prctile(num,75);
IQR=Q3-Q1;          %四分位距
lb=Q1-1.5*IQR;
ub=Q3+1.5*IQR;
ind1=find((num<lb)|(num>ub));
num(ind1)=NaN;

%% 缺失值
TF=ismissing(num);  %识别缺失值
%找出所在的索引
ind0=find(TF==1);
indt=1:size(num,1);
indt(ind0)=[];
num1=num;
%1.直接删除(缺失过多)
num1(ind0)=[];
%2.特殊值填补(特殊)
%3.插值(三段艾尔米特)
y=num;
y(ind0)=[];
p=pchip(indt,y,ind0);%插值结果
num(ind0)=p;
figure
hold on
boxplot(num);

%% 探索性分析
%均值、中位数、方差、标准差、最大、最小
Mean=mean(num);
Median=median(num);
Var=var(num);
Std=std(num);
Max=max(num);
Min=min(num);
%频数(类)
ts=tabulate(num);
%偏度(衡量数据分布非对称性程度的统计量,<0右偏,>0左偏,=0正态（对称）)
Skew=skewness(num);
%峰度（峰值）matlab中峰度以3为基准(>3更尖锐集中中间多，<3反之)
Kurt=kurtosis(num);
%做表
A=table(Mean,Median,Var,Std,Max,Min,Skew,Kurt);
%数据可视化
